package cn.edu.tju.elm.service;

import cn.edu.tju.elm.model.CreditHistory;
import cn.edu.tju.elm.model.CreditRating;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 信用服务接口
 */
public interface CreditService {
    
    /**
     * 设置用户VIP状态
     */
    void setVipStatus(Long userId, boolean isVip, LocalDateTime expireTime);
    
    /**
     * 检查用户是否为VIP
     */
    boolean isVipUser(Long userId);
    
    /**
     * 获取用户信用评级
     */
    CreditRating getCreditRating(Long userId);
    
    /**
     * 获取用户信用额度使用情况
     */
    BigDecimal getUsedCredit(Long userId);
    
    /**
     * 获取用户剩余信用额度
     */
    BigDecimal getRemainingCredit(Long userId);
    
    /**
     * 检查用户是否逾期
     */
    boolean isOverdue(Long userId);
    
    /**
     * 计算用户逾期利息
     */
    BigDecimal calculateOverdueInterest(Long userId);
    
    /**
     * 获取用户信用历史记录
     */
    List<CreditHistory> getCreditHistory(Long userId);
    
    /**
     * 处理逾期检查（定时任务调用）
     */
    void processOverdueCheck();
}